import { autoUpdater } from "electron-updater";
import { ipcMain } from "electron";
import log from "electron-log";

/**
 * Created by 白雨浓 on 2019/7/10 20:20.
 */

const update = (win) => {

  autoUpdater.setFeedURL({
    provider: 'generic',
    url: 'http://10.10.3.29/app/'
  });

  autoUpdater.autoDownload = false; // 关闭自动更新
  autoUpdater.autoInstallOnAppQuit = true; // APP退出的时候自动安装

  ipcMain.on("check-update", () => {
    if (process.env.NODE_ENV !== 'development') {
      //执行自动检查更新
      autoUpdater.checkForUpdates();
    }
  });

  // 监听正在检查更新事件
  autoUpdater.on('checking-for-update', () => {
    log.warn('正在检查更新');
  });

  // 监听需要更新事件
  autoUpdater.on('update-available', (info) => {
    win.webContents.send('update-available', info);
  });

  //监听渲染线程中用户是否同意下载
  ipcMain.on("download-update", () => {
    log.warn('download-update');
    try {
      autoUpdater.downloadUpdate();
    } catch (e) {
      log.error(e);
    }
  });

  // 监听下载进度事件
  autoUpdater.on('download-progress', progress => {
    win.webContents.send('download-progress', progress);
  });

  // 监听下载完成事件
  autoUpdater.on('update-downloaded', info => {

    win.webContents.send('update-downloaded');

    // 监听渲染线程中用户是否应用更新
    ipcMain.on('quit-and-install', () => {
      autoUpdater.quitAndInstall();
    });
  });

  // 监听检查更新出错事件
  autoUpdater.on('error', err => {
    log.error(err);
    win.webContents.send('error', err);
  });

};
export { update }
